/* 
  1、获取用户的收货地址
    1、绑定点击事件
    2、调用小程序内置的 api 获取用户的收货地址。wx.chooseAddress
    3、获取用户，对小程序，所赋予 获取权限的 权限状态 scope
      1 假设用户 点击获取收货地址权限提示框 确定
      scope的值为true：直接调用收获代码的。
      2 假设用户，点击获取收货地址权限提示框 取消
      scope的值为false：
        1、诱导用户自己打开授权设置页面(wx.openSetting)，当前用户重新给予获取地址权限
        2、获取收货地址。
        3 假设用户 用来没有调用过收货地址 api
      scope的值为undefined：直接调用收获代码的。
    4、把获取到的收货地址存入本地存储中
  2、页面加载完毕
    0、onLoad onShow
    1、获取本地存储库中的地址数据
    2、把数据设置给data中的一个变量 address
*/
import { getSetting,chooseAddress,openSetting } from '../../utils/asyncWx.js'
// import { getSetting,}
Page({
  data:{
    address:{}
  },

  onShow(){

  },

  // 点击 收货地址按钮。
  async handleChooseAddress(){
  // 1 获取权限状态
    try {
      /*wx.getSetting({
        success: (res) => {
          // 2 获取权限状态 只要发现一些 
          //  属性名很怪异的情况，都要用[]来获取属性值
          console.log(res);
          const scopeAddress = res.authSetting["scope.address"]
          if(scopeAddress===true || scopeAddress === undefined){
            // console.log("有权限");
            wx.chooseAddress({
              success: (res1) => {
                console.log(res1);
              },
            });
          }else{
            // 3 用户以前拒绝过授权，先诱导用户打开授权页面
            wx.openSetting({
              success:(res3)=>{
                console.log(res3);
              }
            })
          }
        },
        fail:()=>{},
        complete:()=>{}
      });*/

      // 注释：以上24行到49行，是正常的繁琐写法。以下改为Promise形式写出来。
      // 把这三个方法封装好，再这里调用。
      // 下面的这里一定要用await，否则读取不了里面的数据

      const res1 = await getSetting();
      console.log(res1);
      const scopeAddress = res1.authSetting["scope.address"]
      // 2 判断 权限状态。
      if(scopeAddress === false){
        await openSetting();
      } 
      // 4、调用获取收货地址
      const address = await chooseAddress();
      // 5、存入缓存中
      wx.setStorageSync('address', address)
    } catch (error) {
      console.log(error);
    }
  }
})